// RAP [bm]: makes no sense without IWorkbench#restart
///*******************************************************************************
// * Copyright (c) 2000, 2009 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//
//package org.eclipse.ui.internal.dialogs;
//
//import java.util.Arrays;
//import java.util.Comparator;
//import java.util.Locale;
//
//import org.eclipse.core.runtime.IConfigurationElement;
//import org.eclipse.core.runtime.IProgressMonitor;
//import org.eclipse.core.runtime.IStatus;
//import org.eclipse.core.runtime.Platform;
//import org.eclipse.core.runtime.Status;
//import org.eclipse.jface.dialogs.Dialog;
//import org.eclipse.jface.dialogs.IDialogConstants;
//import org.eclipse.jface.dialogs.MessageDialog;
//import org.eclipse.jface.preference.IPreferenceStore;
//import org.eclipse.jface.preference.PreferencePage;
//import org.eclipse.jface.util.IPropertyChangeListener;
//import org.eclipse.jface.util.PropertyChangeEvent;
//import org.eclipse.jface.window.Window;
//import org.eclipse.osgi.util.NLS;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.accessibility.AccessibleAdapter;
//import org.eclipse.swt.accessibility.AccessibleEvent;
//import org.eclipse.swt.events.SelectionAdapter;
//import org.eclipse.swt.events.SelectionEvent;
//import org.eclipse.swt.events.SelectionListener;
//import org.eclipse.swt.graphics.GC;
//import org.eclipse.swt.layout.FormAttachment;
//import org.eclipse.swt.layout.FormData;
//import org.eclipse.swt.layout.FormLayout;
//import org.eclipse.swt.layout.GridData;
//import org.eclipse.swt.layout.GridLayout;
//import org.eclipse.swt.widgets.Button;
//import org.eclipse.swt.widgets.Combo;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.swt.widgets.Control;
//import org.eclipse.swt.widgets.Group;
//import org.eclipse.swt.widgets.Label;
//import org.eclipse.swt.widgets.Text;
//import org.eclipse.ui.IWorkbench;
//import org.eclipse.ui.IWorkbenchPreferenceConstants;
//import org.eclipse.ui.IWorkbenchPreferencePage;
//import org.eclipse.ui.PlatformUI;
//import org.eclipse.ui.internal.IPreferenceConstants;
//import org.eclipse.ui.internal.IWorkbenchConstants;
//import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
//import org.eclipse.ui.internal.WorkbenchMessages;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
//import org.eclipse.ui.internal.themes.IThemeDescriptor;
//import org.eclipse.ui.internal.util.PrefUtil;
//import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
//import org.eclipse.ui.progress.UIJob;
//import org.eclipse.ui.themes.ITheme;
//import org.eclipse.ui.themes.IThemeManager;
//
//import com.ibm.icu.text.Collator;
//
///**
// * The ViewsPreferencePage is the page used to set preferences for the
// * appearance of the workbench. Originally this applied only to views but now
// * applies to the overall appearance, hence the name.
// */
//public class ViewsPreferencePage extends PreferencePage implements
// IWorkbenchPreferencePage {
//
// private Button showTextOnPerspectiveBar;
//
// /*
// * change the tab style of the workbench
// */
// private Button showTraditionalStyleTabs;
//
// private Button enableAnimations;
//
// private Button useColoredLabels;
//
// private Button editorTopButton;
//
// private Button editorBottomButton;
//
// private Button viewTopButton;
//
// private Button viewBottomButton;
//
// private Button perspLeftButton;
//
// private Button perspTopLeftButton;
//
// private Button perspTopRightButton;
//
// static final String EDITORS_TITLE = WorkbenchMessages.ViewsPreference_editors;
//
// private static final String EDITORS_TOP_TITLE = WorkbenchMessages.ViewsPreference_editors_top;
//
// private static final String EDITORS_BOTTOM_TITLE = WorkbenchMessages.ViewsPreference_editors_bottom;
//
// private static final String VIEWS_TITLE = WorkbenchMessages.ViewsPreference_views;
//
// private static final String VIEWS_TOP_TITLE = WorkbenchMessages.ViewsPreference_views_top;
//
// private static final String VIEWS_BOTTOM_TITLE = WorkbenchMessages.ViewsPreference_views_bottom;
//
// private static final String PERSP_TITLE = WorkbenchMessages.ViewsPreference_perspectiveBar;
//
// private static final String PERSP_LEFT_TITLE = WorkbenchMessages.ViewsPreference_perspectiveBar_left;
//
// private static final String PERSP_TOP_LEFT_TITLE = WorkbenchMessages.ViewsPreference_perspectiveBar_topLeft;
//
// private static final String PERSP_TOP_RIGHT_TITLE = WorkbenchMessages.ViewsPreference_perspectiveBar_topRight;
//
// // These constants aren't my favourite idea, but to get this preference done
// // for M9... A better solution might be to have the presentation factory set
// // its dependant preference defaults on startup. I've filed bug 63346 to do
// // something about this area.
// private static final String R21PRESENTATION_ID = "org.eclipse.ui.internal.r21presentationFactory"; //$NON-NLS-1$
// private static final String DEFAULT_PRESENTATION_ID = IWorkbenchConstants.DEFAULT_PRESENTATION_ID;
// private static final String R30_PRESENTATION_ID = "org.eclipse.ui.presentations.r30"; //$NON-NLS-1$
//
// private static final String INITIAL_VAL = new String();
//
// private static final int INITIAL_LOC_INT = -1;
//
// // remembers whether the hidden fastview bar pref needs to be changed on
// // OK/Apply
// private String fastViewLoc = INITIAL_VAL;
//
// private String showTextOnPerspBar = INITIAL_VAL;
//
// private int editorAlignment;
//
// private boolean editorAlignmentChanged = false;
//
// private int viewAlignment;
//
// private boolean viewAlignmentChanged = false;
//
// private String perspBarLocation;
//
// private Combo themeCombo;
//
// private Combo presentationCombo;
//
// private IConfigurationElement[] presentationFactories;
//
// private String currentPresentationFactoryId;
//
// private Button overridePresButton;
//
// private IPropertyChangeListener overrideListener;
//
// private boolean restartPosted = false;
//
// private Group editorTabGroup;
//
// private Group viewTabGroup;
//
// private Group perspBarTabGroup;
//
// private Text themeDescriptionText;
//
// /**
// * Create a composite that for creating the tab toggle buttons.
// *
// * @param composite
// * Composite
// * @param title
// * String
// */
// private Group createButtonGroup(Composite composite, String title) {
// Group buttonComposite = new Group(composite, SWT.NONE);
// buttonComposite.setText(title);
// FormLayout layout = new FormLayout();
// layout.marginWidth = 5; // same as GridData default
// layout.marginHeight = 5; // same as GridData default
// buttonComposite.setLayout(layout);
// buttonComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
// false));
// return buttonComposite;
// }
//
// /**
// * Creates and returns the SWT control for the customized body of this
// * preference page under the given parent composite.
// * <p>
// * This framework method must be implemented by concrete subclasses.
// * </p>
// *
// * @param parent
// * the parent composite
// * @return Control the new control
// */
// protected Control createContents(Composite parent) {
// initializeDialogUnits(parent);
//
// PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
// IWorkbenchHelpContextIds.VIEWS_PREFERENCE_PAGE);
//
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
//
// editorAlignment = apiStore
// .getInt(IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION);
// viewAlignment = apiStore
// .getInt(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
// perspBarLocation = apiStore
// .getString(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
//
// Composite composite = new Composite(parent, SWT.NONE);
// composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
//
// GridLayout layout = new GridLayout();
// layout.marginWidth = 0;
// layout.marginHeight = 0;
// layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
// composite.setLayout(layout);
//
// createPresentationCombo(composite);
// createPresentationOverride(composite);
// createEditorTabButtonGroup(composite);
// createViewTabButtonGroup(composite);
// createPerspBarTabButtonGroup(composite);
// createShowTextOnPerspectiveBarPref(composite);
// createThemeCombo(composite);
// createThemeDescriptionText(composite);
// createShowTraditionalStyleTabsPref(composite);
// createEnableAnimationsPref(composite);
// createColoredLabelsPref(composite);
//
// updateOverride();
// hookOverrideListener();
//
// applyDialogFont(composite);
//
// return composite;
// }
//
// private void createColoredLabelsPref(Composite composite) {
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
//
// useColoredLabels = createCheckButton(
// composite,
// WorkbenchMessages.ViewsPreference_useColoredLabels,
// apiStore
// .getBoolean(IWorkbenchPreferenceConstants.USE_COLORED_LABELS));
// }
//
// private void createThemeCombo(Composite composite) {
// new Label(composite, SWT.NONE)
// .setText(WorkbenchMessages.ViewsPreference_currentTheme);
// themeCombo = new Combo(composite, SWT.READ_ONLY);
// themeCombo
// .setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
// themeCombo.addSelectionListener(new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// refreshThemeDescriptionText();
// }
// });
// refreshThemeCombo(PlatformUI.getWorkbench().getThemeManager()
// .getCurrentTheme().getId());
// }
//
// /**
// * Create the text box that will contain the current theme description text
// * (if any).
// *
// * @param parent
// * the parent <code>Composite</code>.
// */
// private void createThemeDescriptionText(Composite parent) {
// new Label(parent, SWT.NONE)
// .setText(WorkbenchMessages.ViewsPreference_currentThemeDescription);
//
// themeDescriptionText = new Text(parent, SWT.H_SCROLL | SWT.V_SCROLL
// | SWT.READ_ONLY | SWT.BORDER | SWT.WRAP);
// GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
// // give a height hint that'll show at least two lines (and let the
// // scroll bars draw nicely if necessary)
// GC gc = new GC(parent);
// layoutData.heightHint = Dialog.convertHeightInCharsToPixels(gc
// .getFontMetrics(), 2);
// gc.dispose();
// themeDescriptionText.setLayoutData(layoutData);
//
// refreshThemeDescriptionText();
// }
//
// private void refreshThemeDescriptionText() {
// String description = null;
// int idx = themeCombo.getSelectionIndex();
// // idx == 0 is "Default" which has no description
// if (idx > 0) {
// IThemeDescriptor theme = WorkbenchPlugin.getDefault()
// .getThemeRegistry().getThemes()[idx - 1];
// description = theme.getDescription();
// }
// if (description == null) {
// description = ""; //$NON-NLS-1$
// }
// themeDescriptionText.setText(description);
// }
//
// private Button createCheckButton(Composite composite, String text,
// boolean selection) {
// Button button = new Button(composite, SWT.CHECK);
// button.setText(text);
// button.setSelection(selection);
// return button;
// }
//
// private void createPresentationOverride(Composite parent) {
// IPreferenceStore store = getPreferenceStore();
// boolean override = store
// .getBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION);
//
// // workaround to catch the case where the show text value was changed
// // outside of this page
// // turn off text on persp bar
// boolean showText = PrefUtil.getAPIPreferenceStore().getBoolean(
// IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR);
// if (showText && isR21(currentPresentationFactoryId) || !showText
// && isR30(currentPresentationFactoryId)) {
// if (!override) {
// store
// .setValue(IPreferenceConstants.OVERRIDE_PRESENTATION,
// true);
// override = true;
// }
// }
// // workaround to catch the case where the perspective switcher location
// // was changed outside of this page
// // turn off text on persp bar
// String barLocation = PrefUtil.getAPIPreferenceStore().getString(
// IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
// if (!barLocation.equals(IWorkbenchPreferenceConstants.LEFT)
// && isR21(currentPresentationFactoryId)
// || !barLocation.equals(IWorkbenchPreferenceConstants.TOP_RIGHT)
// && isR30(currentPresentationFactoryId)) {
// if (!override) {
// store
// .setValue(IPreferenceConstants.OVERRIDE_PRESENTATION,
// true);
// override = true;
// }
// }
//
// overridePresButton = createCheckButton(parent,
// WorkbenchMessages.ViewsPreference_override, override);
// overridePresButton.addSelectionListener(new SelectionListener() {
// public void widgetSelected(SelectionEvent e) {
// updateOverrideState(overridePresButton.getSelection());
// }
//
// public void widgetDefaultSelected(SelectionEvent e) {
// updateOverrideState(overridePresButton.getSelection());
// }
// });
// }
//
// private void updateOverrideState(boolean override) {
// IPreferenceStore store = getPreferenceStore();
// if (store.getBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION) != override) {
// store
// .setValue(IPreferenceConstants.OVERRIDE_PRESENTATION,
// override);
// }
// // as we are no longer overriding the prefs should match the selected
// // presentation
// if (!override)
// setPresentationPrefs(getSelectedPresentationID());
// }
//
// private void createPresentationCombo(Composite parent) {
// new Label(parent, SWT.NONE)
// .setText(WorkbenchMessages.ViewsPreference_currentPresentation);
//
// presentationCombo = new Combo(parent, SWT.READ_ONLY);
// presentationCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
// true, false));
// presentationCombo.addSelectionListener(new SelectionListener() {
//
// public void widgetSelected(SelectionEvent e) {
// updateSettings();
// }
//
// public void widgetDefaultSelected(SelectionEvent e) {
// updateSettings();
// }
//
// private void updateSettings() {
// if (!overridePresButton.getSelection()) {
// setPresentationPrefs(getSelectedPresentationID());
// }
// }
// });
//
// refreshPresentationCombo();
// setPresentationSelection();
// }
//
// /**
// * Set the two supplied controls to be beside each other.
// */
// private void attachControls(Control leftControl, Control rightControl) {
// FormData leftData = new FormData();
// leftData.left = new FormAttachment(0, 0);
//
// FormData rightData = new FormData();
// rightData.left = new FormAttachment(
// leftControl,
// convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING));
//
// leftControl.setLayoutData(leftData);
// rightControl.setLayoutData(rightData);
// }
//
// /**
// * Create a composite that contains buttons for selecting tab position for
// * the edit selection.
// *
// * @param composite
// * Composite
// */
// private void createEditorTabButtonGroup(Composite composite) {
// editorTabGroup = createButtonGroup(composite, EDITORS_TITLE);
//
// editorTopButton = new Button(editorTabGroup, SWT.RADIO);
// editorTopButton.setText(EDITORS_TOP_TITLE);
// editorTopButton.setSelection(editorAlignment == SWT.TOP);
// editorTopButton.getAccessible().addAccessibleListener(
// new AccessibleAdapter() {
// public void getName(AccessibleEvent e) {
// e.result = EDITORS_TITLE;
// }
// });
//
// editorBottomButton = new Button(editorTabGroup, SWT.RADIO);
// editorBottomButton.setText(EDITORS_BOTTOM_TITLE);
// editorBottomButton.setSelection(editorAlignment == SWT.BOTTOM);
//
// SelectionListener sel = new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// if (e.widget.equals(editorTopButton)) {
// if (editorAlignment != SWT.TOP) {
// editorAlignment = SWT.TOP;
// editorAlignmentChanged = true;
// }
// } else if (e.widget.equals(editorBottomButton)) {
// if (editorAlignment != SWT.BOTTOM) {
// editorAlignment = SWT.BOTTOM;
// editorAlignmentChanged = true;
// }
// }
// }
// };
//
// editorTopButton.addSelectionListener(sel);
// editorBottomButton.addSelectionListener(sel);
//
// attachControls(editorTopButton, editorBottomButton);
// }
//
// /**
// * Create a composite that contains buttons for selecting tab position for
// * the view selection.
// *
// * @param composite
// * Composite
// */
// private void createViewTabButtonGroup(Composite composite) {
// viewTabGroup = createButtonGroup(composite, VIEWS_TITLE);
//
// viewTopButton = new Button(viewTabGroup, SWT.RADIO);
// viewTopButton.setText(VIEWS_TOP_TITLE);
// viewTopButton.setSelection(this.viewAlignment == SWT.TOP);
//
// viewBottomButton = new Button(viewTabGroup, SWT.RADIO);
// viewBottomButton.setText(VIEWS_BOTTOM_TITLE);
// viewBottomButton.setSelection(viewAlignment == SWT.BOTTOM);
//
// SelectionListener sel = new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// if (e.widget.equals(viewTopButton)) {
// if (viewAlignment != SWT.TOP) {
// viewAlignment = SWT.TOP;
// viewAlignmentChanged = true;
// }
// } else if (e.widget.equals(viewBottomButton)) {
// if (viewAlignment != SWT.BOTTOM) {
// viewAlignment = SWT.BOTTOM;
// viewAlignmentChanged = true;
// }
// }
// }
// };
//
// viewTopButton.addSelectionListener(sel);
// viewBottomButton.addSelectionListener(sel);
//
// attachControls(viewTopButton, viewBottomButton);
// }
//
// /**
// * Create a composite that contains buttons for selecting perspective
// * switcher position.
// *
// * @param composite
// * Composite
// */
// private void createPerspBarTabButtonGroup(Composite composite) {
// perspBarTabGroup = createButtonGroup(composite, PERSP_TITLE);
//
// perspLeftButton = new Button(perspBarTabGroup, SWT.RADIO);
// perspLeftButton.setText(PERSP_LEFT_TITLE);
// perspLeftButton.setSelection(IWorkbenchPreferenceConstants.LEFT
// .equals(perspBarLocation));
// perspLeftButton.addSelectionListener(new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// perspBarLocation = IWorkbenchPreferenceConstants.LEFT;
// }
// });
//
// perspTopLeftButton = new Button(perspBarTabGroup, SWT.RADIO);
// perspTopLeftButton.setText(PERSP_TOP_LEFT_TITLE);
// perspTopLeftButton.setSelection(IWorkbenchPreferenceConstants.TOP_LEFT
// .equals(perspBarLocation));
// perspTopLeftButton.addSelectionListener(new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// perspBarLocation = IWorkbenchPreferenceConstants.TOP_LEFT;
// }
// });
//
// perspTopRightButton = new Button(perspBarTabGroup, SWT.RADIO);
// perspTopRightButton.setText(PERSP_TOP_RIGHT_TITLE);
// perspTopRightButton
// .setSelection(IWorkbenchPreferenceConstants.TOP_RIGHT
// .equals(perspBarLocation));
// perspTopRightButton.addSelectionListener(new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// perspBarLocation = IWorkbenchPreferenceConstants.TOP_RIGHT;
// }
// });
//
// int spacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
//
// FormData leftData = new FormData();
// leftData.left = new FormAttachment(0, 0);
//
// FormData topLeftData = new FormData();
// topLeftData.left = new FormAttachment(perspLeftButton, spacing);
//
// FormData topRightData = new FormData();
// topRightData.left = new FormAttachment(perspTopLeftButton, spacing);
//
// perspLeftButton.setLayoutData(leftData);
// perspTopLeftButton.setLayoutData(topLeftData);
// perspTopRightButton.setLayoutData(topRightData);
// }
//
// /**
// * Hook a listener to update the buttons based on an override preference. If
// * the preference is false then do not allow editing of these options.
// *
// */
// private void hookOverrideListener() {
// if (overrideListener != null) {
// return;
// }
// IPreferenceStore store = getPreferenceStore();
// overrideListener = new IPropertyChangeListener() {
// public void propertyChange(PropertyChangeEvent event) {
// if (event.getProperty().equals(
// IPreferenceConstants.OVERRIDE_PRESENTATION)) {
// updateOverride();
// }
// }
// };
// store.addPropertyChangeListener(overrideListener);
// }
//
// /**
// * Dispose resources created by the receiver.
// */
// public void dispose() {
// super.dispose();
// if (overrideListener != null) {
// getPreferenceStore().removePropertyChangeListener(overrideListener);
// overrideListener = null;
// }
// }
//
// private void updateOverride() {
// boolean override = getPreferenceStore().getBoolean(
// IPreferenceConstants.OVERRIDE_PRESENTATION);
// editorTabGroup.setEnabled(override);
// editorTopButton.setEnabled(override);
// editorBottomButton.setEnabled(override);
// viewTabGroup.setEnabled(override);
// viewTopButton.setEnabled(override);
// viewBottomButton.setEnabled(override);
// perspBarTabGroup.setEnabled(override);
// perspTopLeftButton.setEnabled(override);
// perspLeftButton.setEnabled(override);
// perspTopRightButton.setEnabled(override);
// showTextOnPerspectiveBar.setEnabled(override);
// }
//
// private void refreshPresentationCombo() {
// // get the active presentation
// presentationCombo.removeAll();
// refreshPresentationFactories();
//
// for (int i = 0; i < presentationFactories.length; ++i) {
// IConfigurationElement el = presentationFactories[i];
// String name = el.getAttribute(IWorkbenchConstants.TAG_NAME);
// if (!currentPresentationFactoryId.equals(el
// .getAttribute(IWorkbenchConstants.TAG_ID))) {
// presentationCombo.add(name);
// } else {
// presentationCombo
// .add(NLS
// .bind(
// WorkbenchMessages.ViewsPreference_currentPresentationFormat,
// name));
// }
// }
// }
//
// private void setPresentationSelection() {
// for (int i = 0; i < presentationFactories.length; ++i) {
// if (currentPresentationFactoryId.equals(presentationFactories[i]
// .getAttribute(IWorkbenchConstants.TAG_ID))) {
// presentationCombo.select(i);
// return;
// }
// }
// // presentationCombo.select(0);
// }
//
// /**
// * Update this page's list of presentation factories. This should only be
// * used when the presentation combo is refreshed, as this array will be used
// * to set the selection from the combo.
// */
// private void refreshPresentationFactories() {
// // update the current selection (used to look for changes on apply)
// currentPresentationFactoryId = PrefUtil.getAPIPreferenceStore()
// .getString(
// IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID);
// // Workbench.getInstance().getPresentationId();
//
// // update the sorted list of factories
// presentationFactories = Platform.getExtensionRegistry()
// .getConfigurationElementsFor(PlatformUI.PLUGIN_ID,
// IWorkbenchRegistryConstants.PL_PRESENTATION_FACTORIES);
//
// // sort the array by name
// Arrays.sort(presentationFactories, new Comparator() {
// Collator collator = Collator.getInstance(Locale.getDefault());
//
// public int compare(Object a, Object b) {
// IConfigurationElement el1 = (IConfigurationElement) a;
// IConfigurationElement el2 = (IConfigurationElement) b;
// return collator.compare(el1
// .getAttribute(IWorkbenchConstants.TAG_NAME), el2
// .getAttribute(IWorkbenchConstants.TAG_NAME));
// }
// });
// }
//
// /**
// * Update the preferences associated with the argument presentation factory.
// *
// * @return boolean
// * <code>true<\code> of the presentation has changed and <code>false<\code> otherwise
// */
// private boolean updatePresentationPreferences() {
// // There are some preference values associated with the R2.1
// // presentation that cannot be captured in the presentation
// // factory. Perhaps the extension point should contain these
// // (a list of attributes?), but for now it is done manually.
//
// if (presentationCombo == null) {
// return false;
// }
//
// String id = getSelectedPresentationID();
//
// // if it hasn't changed then there's nothing to do
// if (id.equals(currentPresentationFactoryId)) {
// return false;
// }
//
// currentPresentationFactoryId = id;
// // apply 2.1 prefs if needed
// setPresentationPrefs(id);
// // set the new presentation factory id
// PrefUtil.getAPIPreferenceStore().putValue(
// IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID, id);
// // a restart is required to update the presentation
// return true;
// }
//
// private void setPresentationPrefs(String id) {
// if (isR21(id)) {
// setR21Preferences();
// } else if (isR30(id)) {
// setR30Preferences();
// } else if (isR33(id)) {
// setR33Preferences();
// }
// }
//
// private boolean isR33(String id) {
// return DEFAULT_PRESENTATION_ID.equals(id);
// }
//
// private boolean isR30(String id) {
// return R30_PRESENTATION_ID.equals(id);
// }
//
// private boolean isR21(String id) {
// return R21PRESENTATION_ID.equals(id);
// }
//
// private String getSelectedPresentationID() {
// int selection = presentationCombo.getSelectionIndex();
// IConfigurationElement element = presentationFactories[selection];
// String id = element.getAttribute(IWorkbenchConstants.TAG_ID);
// return id;
// }
//
// private void setR33Preferences() {
// setR30Preferences();
//
// // Turn -on- the new Min/Max behaviour
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
// apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX,
// true);
// }
//
// private void setR30Preferences() {
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
//
// // Turn -off- the new min/max behaviour
// apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX,
// false);
//
// setEditorAlignDefault(apiStore);
// setViewAlignDefault(apiStore);
//
// // perspective switcher on the left
// perspBarLocation = apiStore
// .getDefaultString(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
// perspLeftButton.setSelection(perspBarLocation
// .equals(IWorkbenchPreferenceConstants.LEFT));
// perspTopLeftButton.setSelection(perspBarLocation
// .equals(IWorkbenchPreferenceConstants.TOP_LEFT));
// perspTopRightButton.setSelection(perspBarLocation
// .equals(IWorkbenchPreferenceConstants.TOP_RIGHT));
//
// // perspective bar should be set to default on OK or Apply
// perspBarLocation = INITIAL_VAL;
//
// // turn off text on persp bar
// showTextOnPerspectiveBar
// .setSelection(apiStore
// .getDefaultBoolean(IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR));
// // text on perspective bar should be set to default on OK or Apply
// showTextOnPerspBar = INITIAL_VAL;
//
// // fast view bar should be set to default on OK or Apply
// fastViewLoc = INITIAL_VAL;
// }
//
// /**
// * Set the view alignment based on apiStore.
// * @param apiStore
// */
// private void setViewAlignDefault(IPreferenceStore apiStore) {
// int oldVal;
// // reset the preferences for 3.0 presentation
// oldVal = viewAlignment;
// viewAlignment = apiStore
// .getDefaultInt(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
// viewTopButton.setSelection(viewAlignment == SWT.TOP);
// viewBottomButton.setSelection(viewAlignment == SWT.BOTTOM);
//
// // view tabs should be set to default on OK or Apply
// if (oldVal != viewAlignment) {
// viewAlignmentChanged = true;
// }
// viewAlignment = INITIAL_LOC_INT;
// }
//
// private void setEditorAlignDefault(IPreferenceStore apiStore) {
// // editor tabs on the bottom, really should associate this with the
// // presentation
// int oldVal = editorAlignment;
// editorAlignment = apiStore
// .getDefaultInt(IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION);
// editorTopButton.setSelection(editorAlignment == SWT.TOP);
// editorBottomButton.setSelection(editorAlignment == SWT.BOTTOM);
//
// // editor tabs should be set to default on OK or Apply
// if (oldVal != editorAlignment) {
// editorAlignmentChanged = true;
// }
// editorAlignment = INITIAL_LOC_INT;
// }
//
// private void setR21Preferences() {
// // editor tabs on the bottom, really should associate this with the
// // presentation
// int oldVal = editorAlignment;
// editorAlignment = SWT.TOP;
// editorTopButton.setSelection(editorAlignment == SWT.TOP);
// editorBottomButton.setSelection(editorAlignment == SWT.BOTTOM);
// if (oldVal != editorAlignment) {
// editorAlignmentChanged = true;
// }
//
// // view tabs on the bottom, really should associate this with the
// // presentation
// oldVal = viewAlignment;
// viewAlignment = SWT.BOTTOM;
// viewTopButton.setSelection(viewAlignment == SWT.TOP);
// viewBottomButton.setSelection(viewAlignment == SWT.BOTTOM);
// if (oldVal != viewAlignment) {
// viewAlignmentChanged = true;
// }
//
// // perspective switcher on the left, really should associate this with
// // the presentation
// perspBarLocation = IWorkbenchPreferenceConstants.LEFT;
// perspLeftButton.setSelection(perspBarLocation
// .equals(IWorkbenchPreferenceConstants.LEFT));
// perspTopLeftButton.setSelection(perspBarLocation
// .equals(IWorkbenchPreferenceConstants.TOP_LEFT));
// perspTopRightButton.setSelection(perspBarLocation
// .equals(IWorkbenchPreferenceConstants.TOP_RIGHT));
//
// // turn off text on persp bar, really should associate this with the
// // presentation
// showTextOnPerspectiveBar.setSelection(false);
// showTextOnPerspBar = String.valueOf(false);
//
// // fast view bar on the left (hidden pref, set it directly)
// fastViewLoc = IWorkbenchPreferenceConstants.LEFT;
//
// // Turn -off- the new min/max behaviour
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
// apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX,
// false);
// }
//
// /**
// * @param themeToSelect
// * the id of the theme to be selected
// */
// private void refreshThemeCombo(String themeToSelect) {
// themeCombo.removeAll();
// ITheme currentTheme = PlatformUI.getWorkbench().getThemeManager()
// .getCurrentTheme();
//
// IThemeDescriptor[] descs = WorkbenchPlugin.getDefault()
// .getThemeRegistry().getThemes();
// String defaultThemeString = PlatformUI.getWorkbench().getThemeManager()
// .getTheme(IThemeManager.DEFAULT_THEME).getLabel();
// if (currentTheme.getId().equals(IThemeManager.DEFAULT_THEME)) {
// defaultThemeString = NLS.bind(
// WorkbenchMessages.ViewsPreference_currentThemeFormat,
// new Object[] { defaultThemeString });
// }
// themeCombo.add(defaultThemeString);
//
// String themeString;
// int selection = 0;
// for (int i = 0; i < descs.length; i++) {
// themeString = descs[i].getName();
// if (descs[i].getId().equals(currentTheme.getId())) {
// themeString = NLS.bind(
// WorkbenchMessages.ViewsPreference_currentThemeFormat,
// new Object[] { themeString });
// }
// if (themeToSelect.equals(descs[i].getId())) {
// selection = i + 1;
// }
// themeCombo.add(themeString);
// }
// themeCombo.select(selection);
// }
//
// /**
// * Create the button and text that support setting the preference for
// * showing text labels on the perspective switching bar.
// */
// protected void createShowTextOnPerspectiveBarPref(Composite composite) {
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
//
// showTextOnPerspectiveBar = createCheckButton(
// composite,
// WorkbenchMessages.WorkbenchPreference_showTextOnPerspectiveBar,
// apiStore
// .getBoolean(IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR));
// }
//
// /**
// * Create the button and text that support setting the preference for
// * showing text labels on the perspective switching bar
// */
// protected void createShowTraditionalStyleTabsPref(Composite composite) {
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
//
// showTraditionalStyleTabs = createCheckButton(
// composite,
// WorkbenchMessages.ViewsPreference_traditionalTabs,
// apiStore
// .getBoolean(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS));
// }
//
// protected void createEnableAnimationsPref(Composite composite) {
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
//
// enableAnimations = createCheckButton(
// composite,
// WorkbenchMessages.ViewsPreference_enableAnimations,
// apiStore
// .getBoolean(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS));
// }
//
// /**
// * Returns preference store that belongs to the our plugin.
// *
// * @return IPreferenceStore the preference store for this plugin
// */
// protected IPreferenceStore doGetPreferenceStore() {
// return WorkbenchPlugin.getDefault().getPreferenceStore();
// }
//
// /**
// * Initializes this preference page for the given workbench.
// * <p>
// * This method is called automatically as the preference page is being
// * created and initialized. Clients must not call this method.
// * </p>
// *
// * @param workbench
// * the workbench
// */
// public void init(IWorkbench workbench) {
// currentPresentationFactoryId = PrefUtil.getAPIPreferenceStore()
// .getString(
// IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID);
// }
//
// /**
// * The default button has been pressed.
// */
// protected void performDefaults() {
// IPreferenceStore store = getPreferenceStore();
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
//
// showTextOnPerspectiveBar
// .setSelection(apiStore
// .getDefaultBoolean(IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR));
// showTraditionalStyleTabs
// .setSelection(apiStore
// .getDefaultBoolean(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS));
// enableAnimations
// .setSelection(apiStore
// .getDefaultBoolean(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS));
// useColoredLabels
// .setSelection(apiStore
// .getDefaultBoolean(IWorkbenchPreferenceConstants.USE_COLORED_LABELS));
//
// String presID = apiStore
// .getDefaultString(IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID);
// currentPresentationFactoryId = presID;
// setPresentationSelection();
//
// boolean overridePrefs = store
// .getDefaultBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION);
// overridePresButton.setSelection(overridePrefs);
//
// updateOverrideState(overridePrefs);
//
// setEditorAlignDefault(apiStore);
// setViewAlignDefault(apiStore);
//
// perspBarLocation = apiStore
// .getDefaultString(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
// perspLeftButton.setSelection(IWorkbenchPreferenceConstants.LEFT
// .equals(perspBarLocation));
// perspTopLeftButton.setSelection(IWorkbenchPreferenceConstants.TOP_LEFT
// .equals(perspBarLocation));
// perspTopRightButton
// .setSelection(IWorkbenchPreferenceConstants.TOP_RIGHT
// .equals(perspBarLocation));
//
// refreshThemeCombo(PlatformUI.getWorkbench().getThemeManager().getTheme(
// IThemeManager.DEFAULT_THEME).getId());
// refreshThemeDescriptionText();
//
// WorkbenchPlugin.getDefault().savePluginPreferences();
//
// super.performDefaults();
// }
//
// /**
// * The user has pressed Ok. Store/apply this page's values appropriately.
// */
// public boolean performOk() {
// IPreferenceStore store = getPreferenceStore();
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
// boolean override = store
// .getBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION);
//
// // apply the presentation selection first since it might change some of
// // the other values
// boolean restart = updatePresentationPreferences();
//
// if (showTextOnPerspBar.equals(INITIAL_VAL) && !override) {
// apiStore
// .setToDefault(IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR);
// } else {
// apiStore.setValue(
// IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR,
// showTextOnPerspectiveBar.getSelection());
// }
//
// if (editorAlignmentChanged) {
// if (editorAlignment == INITIAL_LOC_INT) {
// apiStore
// .setToDefault(IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION);
// } else if (!override) {
// // store the editor tab value to setting
// apiStore.setValue(
// IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION,
// editorAlignment);
// } else {
// // store the editor tab value to setting
// apiStore.setValue(
// IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION,
// editorAlignment);
// }
// restart = true;
// }
//
// if (viewAlignmentChanged) {
// if (viewAlignment == INITIAL_LOC_INT) {
// apiStore
// .setToDefault(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
// } else if (!override) {
// // store the view tab value to setting
// apiStore.setValue(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION,
// viewAlignment);
// } else {
// // store the view tab value to setting
// apiStore.setValue(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION,
// viewAlignment);
// }
// restart = true;
// }
//
// if (perspBarLocation.equals(INITIAL_VAL)) {
// apiStore
// .setToDefault(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
// } else if (!override) {
// // store the perspective bar text enabled setting
// apiStore.setValue(
// IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR,
// perspBarLocation);
// } else {
// // store the perspective bar text enabled setting
// apiStore.setValue(
// IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR,
// perspBarLocation);
// }
//
// if (fastViewLoc.equals(INITIAL_VAL)) {
// apiStore
// .setToDefault(IWorkbenchPreferenceConstants.INITIAL_FAST_VIEW_BAR_LOCATION);
// } else {
// apiStore
// .setValue(
// IWorkbenchPreferenceConstants.INITIAL_FAST_VIEW_BAR_LOCATION,
// fastViewLoc);
// }
//
// int idx = themeCombo.getSelectionIndex();
// if (idx <= 0) {
// PlatformUI.getWorkbench().getThemeManager().setCurrentTheme(
// IThemeManager.DEFAULT_THEME);
// refreshThemeCombo(IThemeManager.DEFAULT_THEME);
// } else {
// IThemeDescriptor applyTheme = WorkbenchPlugin.getDefault()
// .getThemeRegistry().getThemes()[idx - 1];
// PlatformUI.getWorkbench().getThemeManager().setCurrentTheme(
// applyTheme.getId());
// refreshThemeCombo(applyTheme.getId());
// }
// refreshThemeDescriptionText();
//
// apiStore.setValue(
// IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
// showTraditionalStyleTabs.getSelection());
// apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS,
// enableAnimations.getSelection());
// apiStore.setValue(IWorkbenchPreferenceConstants.USE_COLORED_LABELS,
// useColoredLabels.getSelection());
//
// PrefUtil.savePrefs();
//
// // we can get here through performApply, in that case only post one
// // restart
// if (restart && !restartPosted) {
// if (getContainer() instanceof IWorkbenchPreferenceContainer) {
// IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
// UIJob job = new UIJob(
// WorkbenchMessages.ViewsPreference_restartRequestJobName) {
// public IStatus runInUIThread(IProgressMonitor monitor) {
// // make sure they really want to do this
// int really = new MessageDialog(
// null,
// WorkbenchMessages.ViewsPreference_presentationConfirm_title,
// null,
// WorkbenchMessages.ViewsPreference_presentationConfirm_message,
// MessageDialog.QUESTION,
// new String[] {
// WorkbenchMessages.ViewsPreference_presentationConfirm_yes,
// WorkbenchMessages.ViewsPreference_presentationConfirm_no },
// 1).open();
// if (really == Window.OK) {
// PlatformUI.getWorkbench().restart();
// }
// return Status.OK_STATUS;
// }
// };
// job.setSystem(true);
// container.registerUpdateJob(job);
// restartPosted = true;
// }
// }
// return true;
// }
//}